#ifndef DEFS_H
#define DEFS_H

#include <QString>
#include <QStringList>
#include <QVector>

#define DATETIME_FORMAT "yyyy-MM-dd hh:mm:ss"
#define DATE_FORMAT "yyyy-MM-dd"

namespace Core
{
// 定义User结构体
    struct User
    {
        int     id;
        QString name;           // 用户姓名
        QString gender;         // 性别
        QString birthDate;      // 出生年月
        QString bio;            // 个人简介
        QString password;

        // 构造函数
        User(const QString& name,
             const QString& gender,
             const QString& birthDate,
             const QString& bio)
            : name(name),
              gender(gender),
              birthDate(birthDate),
              bio(bio) {}

        // 默认构造函数
        User() = default;
    };


// 定义Comment结构体
    struct Comment
    {
        int id;                 // 评论 ID
        int animeId;            // 对应的动漫 ID
        int userId;             // 评论用户的 ID
        QString userName;
        QString content;        // 评论内容
        QString createdAt;      // 评论时间

        // 构造函数
        Comment(int id, int animeId, int userId, const QString& content, const QString& createdAt)
            : id(id), animeId(animeId), userId(userId), content(content), createdAt(createdAt) {}

        Comment() = default; // 默认构造函数
    };

// 更新Anime结构体
    struct Anime
    {
        int     id;
        QString title;          // 动漫标题
        QString releaseDate;    // 放送日期
        QString synopsis;       // 简介
        QString staff;          // 制作团队成员
        QStringList voiceCast;      // 声优
        QString watchLink;      // 观看链接
        QStringList tags;       // 标签
        QVector<Comment> comments; // 评论列表

        // 构造函数
        Anime(const QString& title,
              const QString& releaseDate,
              const QString& synopsis,
              const QString& staff,
              const QString& voiceCast,
              const QString& watchLink)
            : title(title),
              releaseDate(releaseDate),
              synopsis(synopsis),
              staff(staff),
              voiceCast(voiceCast),
              watchLink(watchLink) {}

        Anime() = default; // 默认构造函数
    };

// 帖子评论结构体
    struct PostComment
    {
        int id;                 // 评论 ID
        int postId;             // 帖子 ID
        int userId;             // 评论用户 ID
        QString userName;
        QString content;        // 评论内容
        QString createdAt;      // 评论时间

        PostComment(int id, int postId, int userId, const QString& content, const QString& createdAt)
            : id(id), postId(postId), userId(userId), content(content), createdAt(createdAt) {}

        PostComment() = default; // 默认构造函数
    };

// 帖子评论结构体
    struct LikePost
    {
        int id;                 // 评论 ID
        int postId;             // 帖子 ID
        int userId;             // 评论用户 ID容
        QString userName;
        QString createdAt;      // 评论时间

        LikePost(int id, int postId, int userId, const QString& createdAt)
            : id(id), postId(postId), userId(userId),  createdAt(createdAt) {}

        LikePost() = default; // 默认构造函数
    };

// 帖子结构体
    struct Post
    {
        int id;                 // 帖子 ID
        int userId;             // 发布用户 ID
        QString userName;
        QString title;          // 帖子标题
        QString content;        // 帖子内容
        QString createdAt;      // 发布时间

        int likeCount;          // 点赞总数
        bool userLiked;         // 当前用户是否已点赞
        size_t pixSize;      //图片大小

        QVector<PostComment> comments; // 帖子评论
        QVector<LikePost> likes;        // 帖子点赞

        Post(int id, int userId,  const QString& userName, const QString& title, const QString& content,
             const QString& createdAt, int likeCount = 0, bool userLiked = false)
            : id(id), userId(userId), userName(userName), title(title), content(content),
              createdAt(createdAt), likeCount(likeCount), userLiked(userLiked) {}

        Post() = default; // 默认构造函数
    };

    struct Filter
    {
        QStringList tag;
        QStringList year;
    };

//帖子ID—图片结构体
    struct PixFromPost
    {
        int postId;
        QByteArray cell_pix_buf;
    };
}

#endif // DEFS_H
